package com.sc.nft.entity;

import com.baomidou.mybatisplus.annotation.FieldStrategy;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import com.sc.nft.enums.task.ParticipantsEnum;
import com.sc.nft.enums.task.TaskTypeEnum;
import com.sc.nft.sup.SuperEntity;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.Accessors;
import org.hibernate.validator.constraints.Range;

import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;

/**
 * 任务表(sc_task)实体类
 *
 * @author 张翔宇
 * @description 由 Mybatisplus Code Generator 创建
 * @since 2023-03-29 11:14:52
 */
@Data
@NoArgsConstructor
@Accessors(chain = true)
@TableName("sc_task")
public class Task extends SuperEntity implements Serializable {

    private static final long serialVersionUID = 1L;

    /**
     * 任务模板Id
     */
    private Long taskPanelId;

    /**
     * daoId
     */
    private Long daoId;

    /**
     * 是否官方任务
     */
    private Boolean authorityTask;

    /**
     * icon
     */
    private String taskIcon;

    /**
     * 任务名称
     */
    private String taskName;

    /**
     * 任务类型
     */
    private TaskTypeEnum type;

    /**
     * 权重
     */
    private Integer sort;

    /**
     * 状态
     */
    private Boolean status;

    /**
     * 完成任务邀请人数
     */
    private Integer inviteCount;

    /**
     * 购买商品Id
     */
    private Long buyCollectionId;

    /**
     * 任务开始时间
     */
    private Date taskStartDate;

    /**
     * 任务结束时间
     */
    private Date taskEndDate;

    /**
     * 完成上限
     */
    private Integer superiorLimit;

    /**
     * 参与对象0，不限 1，指定NFT
     */
    private ParticipantsEnum participants;

    /**
     * 指定商品id
     */
    @TableField(value = "partake_collection_id",updateStrategy = FieldStrategy.IGNORED)
    private Long partakeCollectionId;

    /**
     * 审核是否通过 0:待审核 1:通过 2:拒绝
     */
    private Integer audit;

    /**
     * 拒绝原因
     */
    private String reason;


    @ApiModelProperty(value = "藏品范围")
    private Boolean collectionRange;

    @ApiModelProperty(value = "商品范围")
    private Boolean mallRange;
    @ApiModelProperty("累计金额")
    private BigDecimal totalPrice;
    @ApiModelProperty("任务进度重置 0 当天0点 1每周一0点")
    @Range(min = 0,max = 1,message = "任务进度不正确")
    private Integer taskPlan;
}